package Tests;

import Entities.Customer;
import Entities.Movie;
import Entities.Rental;
import junit.framework.Assert;
import org.junit.Test;


public class CustomerTest {

    // Обычные стоят $2 за два дня (минимальный срок аренды) за последующие - $1.5 в день
    // Детские - $1.5 за три дня (минимальный срок) за последующие - $1.5 в день
    // Новинки - $3 за день
    //
    // За каждый фильм начисляется бонусное очко.
    // Если человек берет навинку больше чем на день - ему начисляется дополнительное бонусное очко.

    @Test
    public void testStatement() throws Exception {

        Customer customer = getTestCustomer();

        String result = customer.statement();
        String mustBe = "Учет аренды для Клиент\n" +
                "\tThe Matrix\t2.0\n" +
                "\tKing Leon\t4.5\n" +
                "\tSpider Man 3\t6.0\n" +
                "Сумма задолженности составляет 12.5\n" +
                "Вы заработали 4 очков за активность\n";

        Assert.assertEquals(mustBe, result);
    }

    @Test
    public void testHtmlStatement() throws Exception {
        Customer customer= getTestCustomer();
        String result = customer.htmlStatement();
        String mustBe = "<h1>Учет аренды для <em>Клиент</em></h1>\n" +
                "<p><em>The Matrix</em> 2.0</p>\n" +
                "<p><em>King Leon</em> 4.5</p>\n" +
                "<p><em>Spider Man 3</em> 6.0</p>\n" +
                "<hr>" +
                "<p>Сумма задолженности составляет <em>12.5</em></p>\n" +
                "<p>Вы заработали 4 очков за активность</p>";

        Assert.assertEquals(mustBe, result);
    }

    private Customer getTestCustomer() {
        Movie mr = new Movie("The Matrix", Movie.REGULAR);
        Movie mc = new Movie("King Leon", Movie.CHILDRENS);
        Movie mn = new Movie("Spider Man 3", Movie.NEW_RELEASE);

        Rental rental_r2 = new Rental(mr, 2); // Обычный фильм на два дня ($2 + бонусное очко)
        Rental rental_с5 = new Rental(mc, 5); // Детский фильм на пять дней ($4.5 + бонусное очко)
        Rental rental_n2 = new Rental(mn, 2); // Новинку на два дня ($6 + 2 бонусных очка)
        // Итого получаем $12.5 и 4 бонусных очка

        Customer customer = new Customer("Клиент");

        customer.addRental(rental_r2);
        customer.addRental(rental_с5);
        customer.addRental(rental_n2);
        return customer;
    }
}
